/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package grest.model;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import javax.swing.table.AbstractTableModel;

/**
 *
 * @author Agustin
 */
public class TableModelSL extends AbstractTableModel {
    private java.util.List<Entidad> model = null;
    private Entidad entidad = null;
    
    /**
     * Constructor TableModelABM
     */
   public TableModelSL(Entidad ent){
       entidad = ent;
       model = new ArrayList<Entidad>();
       ResultSet rs = DataIO.getResultSet(ent.getSelectQuery());
       if ( rs != null){
           try{
               while (rs.next()){
                    ent.loadTuplas(model,rs);  //carga la lista con los objetos del r
               }   
           } catch(SQLException sql){
               DataIO.doException(sql,"Error loading objects from ["+ent.getSelectQuery()+"]");
           }
       }
   }
   
       /**
     * Metodo que indica si la celda puede ser editada
     * @param rowIndex
     * @param columnIndex
     * @return 
     */
    @Override
    public boolean isCellEditable(int rowIndex,int columnIndex) {
       return false;
   }
   
   
   
    /**
    * Metodo que devuelve el model 
    * @return model 
    */
    public java.util.List<Entidad> getModel() { 
        return model; 
    }
    /**
     * Metodo que obtiene el valor de una celda de la tabla
     * @param row
     * @param col
     * @return object
     */
    @Override
     public Object getValueAt(int row, int col) { 
       return entidad.getColumnValue(model,row,col); 
   }
    
    /**
      * Metodo que obtiene la cantidad de columnas 
      * @return int
      */
    @Override
    public int getColumnCount() {
       return entidad.getColumnCount(); 
   }
   /**
     * Metodo que obtiene el nombre de una columna
     * @param column
     * @return String
     */ 
    @Override
    public String getColumnName(int column) { 
       return entidad.getColumnTitle(column); 
   }
    /**
     * Metodo que obtiene el tipo de clase de una columna
     * @param columnIndex
     * @return Class
     */
    @Override
    public Class getColumnClass(int columnIndex) { 
       return entidad.getColumnClass(columnIndex); 
   }
    
       /**
     *Metodo que devuelve la cantidad de filas de la tabla
     * @return int
     */
    @Override
    public int getRowCount() { 
       return model.size(); 
   }
  
}